package com.s10.ecloud.web.action;

import java.util.List;
import java.util.regex.Pattern;

import javax.annotation.Resource;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.s10.ecloud.web.Constants;
import com.s10.ecloud.web.model.EnterpriseUser;
import com.s10.ecloud.web.model.User;
import com.s10.ecloud.web.service.IUserService;
import com.s10.ecloud.web.util.MD5;

/**
 * 企业用户， 基本信息修改
 * 
 * @author Kevin
 * 
 * 
 */
public class A020101Action extends ActionSupport {

	@Resource
	private IUserService userService;

	@Action(value = "/toEditEntUserInfo", results = { @Result(name = "success", location = "/page/ent/editEntUserInfo.jsp") })
	public String toEditPasswordPage() throws Exception {
		this.setUser((EnterpriseUser) ActionContext.getContext().getSession()
				.get(Constants.SESSION_KEY_USER));

		return this.SUCCESS;
	}

	@Action(value = "/updateEntUserInfo", results = { @Result(name = "success", location = "/page/ent/registSuccess.jsp") })
	public String updateEntUserInfo() throws Exception {

		EnterpriseUser newUser = (EnterpriseUser) ActionContext.getContext()
				.getSession().get(Constants.SESSION_KEY_USER);

		newUser = (EnterpriseUser) userService.getUser(newUser);

		newUser.setName(user.getName());
		newUser.setPhone(user.getPhone());
		newUser.setMobile(user.getMobile());
		newUser.setQq(user.getQq());
		newUser.setCompanyName(user.getCompanyName());
		newUser.setAddress(user.getAddress());
		newUser.setZipcode(user.getZipcode());
		newUser.setWebsite(user.getWebsite());
		newUser.setCommerceNo(user.getCommerceNo());
		// 企业用户重新激活
		newUser.setState(Constants.USER_ACTIVE_STATE_WAITING_AUDIT);

		java.sql.Date dateNow = new java.sql.Date(
				new java.util.Date().getTime());
		newUser.setUpdateDate(dateNow);

		User u = userService.updateUser(newUser);
		// 更新session中的内容

		ActionContext.getContext().getSession()
				.remove(Constants.SESSION_KEY_USER);

		this.addActionMessage("更新成功，等待重新激活！");

		return this.SUCCESS;
	}

	/** 手动进行新增注册会员的表单验证 */
	private boolean validateAddMember() {

		/** 联系人信息验证 */
		// 联系人姓名
		if (user.getName() == null || user.getName().trim().length() < 1) {
			addFieldError("name", getText("请输入联系人姓名"));
		}
		// 固定电话
		if (user.getPhone() != null
				&& user.getPhone().trim().length() > 0
				&& !Pattern.matches("^[0-9\\-()（）]{7,18}$", user.getPhone()
						.trim())) {
			addFieldError("phone", getText("member_validation_phone"));
		}
		// 手机
		if (user.getMobile() != null
				&& user.getMobile().trim().length() > 0
				&& !Pattern.matches("^0?(13|15|18|14)[0-9]{9}$", user
						.getMobile().trim())) {
			addFieldError("mobile", getText("member_validation_phone"));
		}

		// QQ
		if (user.getQq() == null || user.getQq().trim().length() < 1) {
			addFieldError("QQ", getText("请输入QQ号码"));
		}

		/** 公司信息 */
		// 公司名称
		if (user.getCompanyName() == null
				|| user.getCompanyName().trim().length() < 1) {
			addFieldError("companyName", getText("请输入公司名称"));
		}
		// TODO 公司所在地

		// 公司地址
		if (user.getAddress() == null || user.getAddress().trim().length() < 1) {
			addFieldError("address", getText("请输入公司地址"));
		}

		// 公司邮编
		if (user.getZipcode() == null || user.getZipcode().trim().length() < 1) {
			addFieldError("address", getText("请输入公司邮编"));
		}
		// 使用正则表达式验证公司邮编
		else if (!Pattern.matches("\\d{6}", user.getZipcode().trim())) {
			addFieldError("zip", getText("公司邮编不正确"));
		}

		// 公司网址
		if (user.getWebsite() == null || user.getWebsite().trim().length() < 1) {
			addFieldError("website", getText("请输入公司网址"));
		}
		// 使用正则表达式验证公司网址
		else if (!Pattern.matches(
				"^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&#=]*)?$", user
						.getWebsite().trim())) {
			addFieldError("website", getText("公司网址输入不正确"));
		}

		// 工商登记号
		if (user.getCommerceNo() == null
				|| user.getCommerceNo().trim().length() < 1) {
			addFieldError("commerceNo", getText("请输入工商登记号"));
		} else {
			List<User> userLIst = userService.getEntUserByCommerceNo(this
					.getUser().getCommerceNo());
			if (userLIst.size() > 0) {
				addFieldError("commerceNo", getText("工商登记号已经存在，请重新输入"));
			}
		}

		// 表单验证失败
		if (hasFieldErrors()) {
			return false;
		} else {
			return true;
		}
	}

	private EnterpriseUser user;

	public EnterpriseUser getUser() {
		return user;
	}

	public void setUser(EnterpriseUser user) {
		this.user = user;
	}

}
